Frameworks y Drivers

Existen muchas tecnologías y en cada una han cambiado o han adaptado la propuesta de arquitectura limpia de una manera que difiere de lo normal.

En java / spring, al ser un lenguaje de programación orientado a objectos el usar esta forma de organización brinda una grana ventaja de mantenibilidad y robutez.

src/
└── main/
    └── java/
        └── com/tuempresa/tuapp/
            ├── domain/
            │   ├── model/             ← Entidades (reglas del negocio)
            │   └── repository/        ← Interfaces de acceso a datos
            │
            ├── application/
            │   └── usecase/           ← Casos de uso (lógica de aplicación)
            │
            ├── infrastructure/
            │   ├── repository/        ← Implementaciones de repositorios (JPA, etc.)
            │   └── config/            ← Configuraciones, Beans, etc.
            │
            └── interface/
                ├── controller/        ← Controladores REST
                └── dto/               ← DTOs, mapeos de entrada/salida

En caso como Node / Express tambien se puede aplicar estos conceptos y serian mas o menos de esta forma:

project-root/
├── src/
│   ├── domain/
│   │   ├── models/           ← Entidades del negocio
│   │   └── repositories/     ← Interfaces (abstractas)
│   │
│   ├── application/
│   │   └── use-cases/        ← Lógica de aplicación, casos de uso
│   │
│   ├── infrastructure/
│   │   └── db/
│   │       ├── models/       ← Esquemas reales de DB (ej: Mongoose, Sequelize)
│   │       └── implementations/ ← Repositorios concretos
│   │
│   └── interface/
│       ├── routes/           ← Definiciones de rutas HTTP
│       ├── controllers/      ← Lógica HTTP (req/res)
│       └── dto/              ← Objetos de entrada/salida
│
├── app.js                    ← Entry point
└── package.json